home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er 1988 June
/
64er_Magazin_88-06_1988_Markt__Technik_de_Side_A.d64
/
maestro 64
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
12KB
|
291 lines
0 rem"********************************
1 [143]"* *
2 rem"* === [205]aestro 64 === *
3 [143]"* prog.v. ascrans str$ijkstra, 1987 *
4 rem"* *
5 [143]"* getestet, bearbeitet, 'ent- *
6 rem"* fehlert' und artikel von *
7 [143]"* nikolaus heusler, 130388-arr *
8 rem"* *
9 [143]"******************************** close
10 if peek(52)>144 then poke52,144: poke 51,0: poke56,144
11 tl$="[205]aestro 64 von [198].[196]ijkstra / [206].[200]eusler [163][163][163][163][163][163][163][163][163][163]
12 tl$[178]tl$[170][199](13)[170]"(c) (NULL)arkt & (NULL)echnik, (NULL)edaktion 64'er"[170][199](13)
14 [151]53281,13: [151]53280,13: [151]650,128:[139]hq[167]40
15 tm[178]27[170](([194](65408)[175]192)[178]64)[172]16:[143] exos v7 von nh
16 [153] "load"tl$"(NULL)ax."tm"(NULL)ekunden chr$eduld, bitte !
18 if peek(49152)<> 76 then load "mc1",8,1
20 if peek(36864)<> 76 then load "mc2+3",8,1
24 hq=2500: mm%=180: of=15: pq=2
26 dim cp%(3,hq), da%(18), re%(36), gq%(15,10), do%(6), t$(50), p(7), q(6)
28 def fna(x)=x-12*int(x/12)
30 for k=1 to 96: read a: next
32 for k=0 to 10: for l=0 to 14: read gq%(l,k) :next:next
34 for k=0 to 5: read do%(k): next: for k=0 to 7: read p(k): next
36 for k=0 to 6: read q(k): next: for k=0 to 41: read t$(k): next
38 for k=0 to 1: read f$(k): next
40 rem "[200]auptmenue-------------------------------------------------------------
42 n[178]0: [141]416: [139] a[178]0 [167] [153]"servus !!":[128]
44 [139] a[177]20 [167] mm%[178]a: [137]42
46 [145] a [141] 430,63,52,448,54,66,404,404
48 [137] 42
50 [143] "(NULL)usikeditor------------------------------------------------------------
52 sys49152,cp%(0,0):return
54 rem"[200]armonisieren und spielen-----------------------------------------------
56 [141] 132: [139] om[179]2 [167] 130
58 n[178]1: [141]416: ne[178]a: n[178]2: [141]416: m0[178]a: n[178]3: [141]416: do[178]a
60 [158]36869,cp%(0,0),re%(0),da%(0),ne,m0,do%(do)
62 [143] "(NULL)pielen----------------------------------------------------------------
63 print"[211]piel laeuft. [193]bbruch mit [211][200][201][198][212] [210][197][212][213][210][206].
64 [158]49164,cp%(0,0),mm%,gq%(0,0):[142]
66 [143]"(NULL)iedvariationen---------------------------------------------------------
68 vd=1: gosub132: if om<2 then 130
70 nn=int(hq/(2*om)):if nn>8 then nn=8
72 if nn<2 then a=0: goto412
74 n=4: gosub416: if val(a$)=0 then return
75 print"[205][207][205][208][204][211].....
76 [158]36869,cp%(0,0),re%(0),da%(0),3,2,255: cp%(0,re%(ri)[171](re%(ri)[179]hq))[178][171]1
78 [158]39686,cp%(0,0),om,om: [158]36869,cp%(0,0),re%(0),da%(0),0,0,255: [153]
80 n[178]0: [129] k[178]0 [164] 10: [139] cp%(1,k) [167] n[178]n[170]1
82 [130]: vd[178]0: [139] n[177]7 [167] [158]39689,cp%(0,0): n[178]n[171]2: vd[178]vd[170]2
84 [139] n[177]3 [167] [158]39689,cp%(0,0): vd[178]vd[170]2
86 vd[178]vd[171](vd[178]0): [141]132 : [139] om[179]2 [167] 130
88 [129] k[178]1 [164] ri: x[178]re%(k): cp%(0,x)[178]0: cp%(0,x[170]om)[178]0: [130]
90 oo[178]2[172]om: [129] k[178]0 [164] hq[171]oo [169] oo: [158]39686,cp%(0,k),oo,oo: [130]: nb[178]om
92 [153]"right$n atnrbeit:
(NULL)ariation";:[151]198,.
93 [143] ctrl m
94 [129] va[178]2 [164] nn: wz[178]1: [139] [194](198) [167] va[178]nn: [137]122
96 : [139] [202] (a$,wz,1)[179][177]" " [167] wz[178]wz[170]1: [139] wz[179][178][195](a$) [167]96
98 : q[178][197]([200](a$,wz[171]1)): a$[178][202](a$,wz[170]1): [139] q[178]0 [167] 122
100 : [153] q;: [145] q [141]194,160,252,210,288,296,304
102 : s[178] 1[171](q[177]5)[171](q[178]6)
104 : [129] k[178]k1 [164] ew: [158]39698,cp%(0,0),k: [139] [194](720)[178]0 [167] 120
106 : [139] [194](721)[179][177]1 [167] [139] q[179]7 [167] 120
108 : [139] [194](721)[178]1 [167] [139] q[178]7 [167] 120
110 : vn[178]k[171]1
112 : [139] cp%(s,vn)[178]0 [167] vn[178]vn[171]1: [137]112
114 : [139] vn[179]k[171]16 [167] 120
116 : [139] q[178]6 [167] cp%(s,vn)[178]cp%(s,vn)[171]7[172](1[170]2[172](cp%(s,vn)[179]38)): [137]120
118 : cp%(s,vn)[178]cp%(s,vn)[171]5[172](1[170]2[172](cp%(s,vn)[179]71))
120 : [130] k: cp%(0,k1[171]2)[178][171]101
122 [130] va
124 [158]39680,cp%(0,m),2: cp%(0,1)[178]266: cp%(0,0)[178]1068
126 [139] nb[179]hq [167] cp%(0,nb[170]1[170](nb[177][178]hq))[178][171]1
128 [153]: [137]64
130 a[178]1: [137]412
132 [158]36864,cp%(0,0),re%(0),da%(0): ri[178]re%(0): om[178]re%(ri)[170]vd: [142]
134 [143] "valrste (k1) und letzte (ew) (NULL)ote einer (NULL)ariation bestimmen--------------
136 rem "und erste [206]ote der naechsten [214]ariation (nb)
138 k1[178]nb
140 [139] cp%(1,k1)[178]0 [167] k1[178]k1[170]1: [139] k1[179][178] ew [167] 140
142 nb[178]k1[170]om: ew[178]nb[171]1
144 [139] cp%(1,ew)[178]0 [167] ew[178]ew[171]1: [139] ew[177][178]0 [167] 144
146 [142]
148 [143]"atnbstand (of) und (NULL)onintervall (in)--------------------------------------
150 rem"zur naechsten [206]ote bestimmen
152 of[178]1: lt[178]cp%(s,k)
154 [139] cp%(s,k[170]of) [167] in[178]cp%(s,k[170]of)[171]lt: [142]
156 of[178]of[170]1: [139] of[178][179]ew[171]k [167] 154
158 [142]
160 [143] "(NULL)opranfiguration, frei-------------------------------------------------
162 gosub136: cp%(0,k1-1)=261: ng=0
164 k=k1
166 gosub198
168 : vl=0: rn=0
170 : for kk= 1-(ng>0) to of-1
172 : if ng then if kk=5 then 180
174 : if rn=0 then if ng=0 then if int(rnd(0)*2) then rn=1: goto180
176 : if vl then vl=0: cp%(1,k+kk)=al: goto180
178 : cp%(1,k+kk)=ba: vl=1
180 : gosub188
182 : next kk: gosub188
184 k=k+kk: if k<ew then 166
186 return
188 : d1=cp%(1,k+kk)-cp%(1,k+kk-1): d2=abs(d1)
190 : if d2=10 or d2=11 then cp%(1,k+kk)=cp%(1,k+kk)-12*sgn(d1)
192 : return
194 rem "[211]opranfiguration, streng-----------------------------------------------
196 [141]136: cp%(0,k1[171]1)[178]265: ng[178]1:[137]164
198 [143] "atnkkordtoene suchen, und oberhalb (NULL)opran liegen-------------------------
200 s=1: gosub148: ifcp%(2,k) then al=cp%(2,k)
202 if cp%(3,k) then ba=cp%(3,k)
204 if al<cp%(1,k) then if al<60 then al=al+12: goto204
206 if ba<cp%(1,k) then if ba<60 then ba=ba+12:goto206
208 return
210 rem "[212]enorvariation---------------------------------------------------------
212 [141]136: cp%(0,k1[171]1)[178]266
214 [129] k[178]k1 [164] ew: al[178]cp%(2,k): sp[178]cp%(1,k)
216 : cp%(1,k)[178]al[171]12[172](al[177]0):cp%(2,k)[178]sp[170]12[172](sp[177]0)
218 : [139] cp%(3,k)[177]cp%(2,k)[167] cp%(3,k)[178]cp%(3,k)[171]12
220 [130] k
222 k[178]k1: s[178]1: e1[178]ew
224 [143] "(NULL)timme s diatonisch auffuellen-----------------------------------------
226 if k>=e1 then return
228 gosub148: if of<2*pq then k=k+pq: goto226
230 if abs(in)>=of/2 then if in<>0 then 234
232 cp%(s,k+pq)=cp%(s,k)+in-(1+of/pq)*sgn(rnd(0)-.5): goto236
234 cp%(s,k+pq)=cp%(s,k)+pq*int(in/of)
236 k=k+pq: gosub238: goto228
238 rem "[206]ote k in [211]timme s ersetzen durch [205]elodienote------------------------
240 aa[178]0: bb[178]1
242 cp%(s,k)[178]cp%(s,k)[170]aa[172]bb: a[178][165]a(cp%(s,k)): [139] a[179]0 [167] a[178]a[170]12
244 [139] a[177]11 [167] a[178]a[171]12
246 [139] da%(a) [167] [142]
248 aa[178]aa[170]1: bb[178]bb[172][171]1:[139] aa[179]6 [167] 242
250 [142]
252 [143] "(NULL)riolenvariation-------------------------------------------------------
254 gosub136: cp%(0,k1-1)=262
256 for k=k1 to ew-1 step 4
258 : cp%(0,k)=33: cp%(0,k+1)=33: cp%(0,k+2)=-67: cp%(0,k+3)=-67
260 : fors=1to3: cp%(s,k+3)=0: next s
262 next k
264 for k=k1 to ew-1 step 4
266 : s=1: gosub148: if of<4 then 286
268 : ifin<25then272
270 : cp%(1,k)=cp%(1,k-2)+4*sgn(.5+(((k-k1)and32)=0)): s=1: gosub238
272 : for l=0 to 1: k=k+1: tr=1
274 : cp%(1,k)=cp%(1,k-tr)+2
276 : if cp%(1,k)<24 then tr=tr+1: if tr<=k then274
278 : if ((k-k1)and32)<>0 then cp%(1,k)=cp%(1,k)-4
280 : if l thencp%(1,k)=cp%(1,k)+4*sgn(.5+(((k-k1)and32)=0))
282 : s=1: gosub238
284 : next l: k=k-2
286 next k: return
288 rem "6/8-[212]aktvariation-------------------------------------------------
290 [141]136: cp%(0,k1[171]1)[178]264
292 [129] k[178]k1[170]4 [164] ew[171]1 [169] 8
294 [129] l[178]0 [164] 3: cp%(0,k[170]l)[178][171]100:[130] l : [130] k: k[178]k1: [137]222
296 [143] "peekassfiguration---------------------------------------------------------
298 gosub136: cp%(0,k1-1)=257: k=k1
300 if cp%(3,k)=0 then k=k+1: goto300
302 s=3: e1=ew: goto224
304 rem"[198]uge--------------------------------------------------------------------
306 [141]136: cp%(0,k1[171]1)[178]256
308 [139] ri[177]1 [167] le[178](re%(1)[170]vd[170]re%(ri)[171]re%(ri[171]1))[172]3
310 [139] ri[178]1 [167] le[178](re%(1)[170]vd)[172]6
312 [139] le[177]om [167] [158]39680,cp%(0,k1[170]om),le[171]om: nb[178]nb[170]le[171]om
314 [139] le[179]om [167] [158]39683,cp%(0,k1[170]le),om[171]le: nb[178]nb[171]om[170]le
316 k[178]k1: k0[178]k1: r[178]1: [141]380
318 s1[178]2: k[178]k1: [141]362: k1[178]k1[170]ln: [141]368
320 [129] k[178]k1[171]ln [164] k1[170]ln[171]1
322 : x[178]cp%(1,k): [139] x[177]12 [167] cp%(1,k)[178]0: cp%(3,k)[178]x[171]12
324 [130]: cp%(1,k1[171]ln)[178][171]1
326 k[178]k1[170]ln[172]2: k1[178]k: r[178]ri: lo[178]ln: [141]380
328 s1[178]3: k[178]k1: [141]362: k1[178]k1[170]ln: [141]368
330 k1[178]k0[170]lo[171]1: k2[178]k1[170]lo
332 [139] cp%(1,k2)[178]0 [167] k2[178]k2[170]1: [137]332
334 [139] cp%(3,k1)[178]0 [167] k1[178]k1[171]1: [137]334
336 k3[178]k2[170]lo[170]ln: k4[178]k3[170]ln: ew[178]nb[171]1
338 [141]386: k[178]k1: s[178]3: e1[178]k2: [141]224: k1[178]k0
340 [139] cp%(2,k2)[178]0 [167] k2[178]k2[171]1: [137]340
342 [139] cp%(2,k3)[178]0 [167] k3[178]k3[170]1: [137]342
344 [141]394: k[178]k2: s[178]2:e1[178]k3: [141]224
346 [139] cp%(1,k3)[178]0 [167] k3[178]k3[171]1:[137]346
348 [139] cp%(1,k4)[178]0 [167] k4[178]k4[170]1:[137]348
350 [141]386: k[178]k3: s[178]1: e1[178]k4: [141]224
352 [139] cp%(2,k4)[178]0 [167] k4[178]k4[171]1: [137]352
354 [139] cp%(2,ew)[178]0 [167] ew[178]ew[171]1: [137]354
356 [141] 394: k[178]k4: s[178]2: e1[178]ew: [141]224
358 [129] k[178]ew[171]8 [164] ew[171]5: cp%(0,k)[178]20: cp%(0,k[170]4)[178]25: cp%(0,k[170]8)[178]35: [130]
360 ew[178]nb[171]1: [142]
362 [143]"(NULL)timme s1 bis 3 loeschen ueber (NULL)trecke ln-------------------------------
364 kb=k:for k=k to k+ln-1: for s=s1 to 3: cp%(s,k)=0: next: next
366 fors=s1to3:cp%(s,kb)=-1:next: return
368 rem"[211]timmen 1 und 2 vertauschen und in den [196]ominant transponieren-----------
370 [129] k[178]k1 [164] k1[170]ln[171]1: cp%(3,k)[178]0: al[178]cp%(2,k): sp[178]cp%(1,k)
372 [139] al[178]0 [167] [139] sp[178]0 [167]378
374 cp%(1,k)[178]al[171]7[172](al[177]0): cp%(2,k)[178]sp[170]5[172](sp[177]0)
376 [139] cp%(1,k)[179]cp%(2,k) [167] cp%(1,k)[178]cp%(1,k)[170]12: [137]376
378 [130]: [142]
380 [143]"(NULL)eile r dreimal in die ascuge kopieren------------------------------------
382 ln=re%(r)+vd: if r>1 then ln=ln-re%(r-1)-vd
384 sys39692,cp%(0,0),k,ln,r,k1,om:return
386 rem"[212]onleiter in den [196]ominant transponieren---------------------------------
388 k[178]18
390 da%(k)[178]da%(k[171]7): k[178]k[171]1: [139] k[177]6 [167]390
392 [129] k[178]0 [164] 6:da%(k)[178]da%(k[170]12): [130]: [142]
394 [143]"(NULL)onleiter in die (NULL)onica zurueck transponieren---------------------------
396 for k=0 to 11: da%(k)=da%(k+7): next: return
398 rem musik loeschen----------------------------------------------------------
400 sys 49155,cp%(0,0): return
402 rem save oder load ---------------------------------------------------------
404 nm$="": input "[198]ilename";nm$:if nm$=""then return
405 ifa=7thenprint"[211]cratching "nm$:open45,8,15,"s0:"+nm$:close45:gosub900
406 poke0,111:print"[205][207][205][208][204][211].....":sys49158+3*(a-7),cp%(0,0),nm$,8,0:poke0,47
407 gosub900 : rem die pokes 0,xxx 'bedienen' den fastloader exos v7
408 remprint"[208]rintroutine noch nicht vorhanden
410 [143]"atnuf (NULL)astendruck warten--------------------------------------------------
412 print f$(a):print"([212]aste)":poke198,0: wait 198,1:poke198,0: return
414 rem"[205]enue------------------------------------------------------------------
416 [151]198,0
418 [153] t$(p(n)):[129] k[178]0 [164] p(n[170]1)[171]p(n)[171]2:[153] k[171](n[178]4)"cmd. "t$(1[170]p(n)[170]k):[130]
420 a$[178]"":[139] n[178]0 [167] [153]"20 - 511: (NULL)empo (ist"mm%"cmd)": a$[178]"19"
422 [139] n[179][177]4 [167] [153] "peekefehl (0 -"q(n)"cmd)";:[137]428
424 [153]"(NULL)aehlen (NULL)ie hoechstens"nn[171]1"(NULL)ariationen in freier ascolge, ";
426 [153]"die (NULL)ummer(n) getrennt durch (NULL)eerstellen.": [153]" 1 3 4 5 6 2 7on"
428 [133] a$: a[178][197](a$): [153]: [142]
430 [143]"peekeispielmelodie---------------------------------------------------------
432 n=6: a=0: gosub416: if a=0 then return
434 print"[205][207][205][208][204][211].....":sys49155,cp%(0,0): restore
436 for k=0 to 31
438 : for s=0 to 1: read a: cp%(s,k)=a: cp%(s,k+64)=a: next: next
440 for k=0 to 15
442 : for s=0 to 1: read a: cp%(s,k+32)=a: cp%(s,k+48)=a: next: next
444 cp%(0,48)=522: cp%(0,64)=527:cp%(0,95)=-1: gosub64: goto66
446 rem"[211]pezielle [198]unktionen---------------------------------------------------
448 n[178]5: a[178]0: x[178]0: y[178]0: z[178]0: [141]416: [139] a[178]0 [167] [142]
450 [133]"atn und peek ";x,y: [139] x[179]0 [176] x[177]hq [167] 476
452 [139] a[178]3 [175] x[170]y[177]hq [167]476
454 [139] a[179][177]3 [167] [139] y[179]x [176] y[177]hq [167] 476
456 [139] a[178]1 [176] a[177]3 [167] [133]"len ";z:[139] a[178]1 [167] [139] z[179][171]11 [176] z[177]11 [167] 478
458 [139] a[178]1 [167] [139] z[179]0 [167] z[178]z[170]256
460 [139] a[179]4 [167] 464
462 [139] z[179]y [176] z[170]y[171]x[177]hq [167] 478
464 [139] a[178]1 [167] [158]39695,cp%(0,x),y[171]x,z: [142]
466 [139] a[178]2 [167] [158]39683,cp%(0,x),y[171]x: [142]
468 [139] a[178]3 [167] [158]39680,cp%(0,x[170]1),y: [142]
470 [158]39680,cp%(0,z[170]1),1[170]y[171]x
472 [158]39686,cp%(0,x),1[170]z[171]x,1[170]y[171]x:[139] a[178]5 [167] a[178]2: y[178]y[170]1:[137]466
474 [142]
476 [153]"on";: [137]450
478 [153]"on";: [137]456
480 [143]"str$aten fuer peekeispielmelodie----------------------------------------------
482 data,55,,,,55,,,,62,,,,62,,,,64,,,,64,,,-112,62,,,
484 data,,,,60,-109,60,,60,-109,60,,59,,,,59,,,,57,,,,57,,,,55,,,,,-108,
486 data,62,,,,62,,,,60,,,,60,,,,59,,,,59,,,,57,,,,,-108,
488 rem"[196]aten fuer [203]langbibliotheek--------------------------------------------
490 [131]11,64,9,6,5,64,9,6,8,64,10,6,64,,79
492 [131]8,64,4,24,8,64,4,24,8,64,4,24,64,,79
494 [131]6,64,27,89,6,64,27,88,11,64,11,87,64,,79
496 [131],32,11,,,32,11,,,32,8,,64,,79
498 [131],32,51,,,32,51,,,32,51,,64,,79
500 [131]12,32,104,24,12,32,104,42,12,32,104,42,64,,79
502 [131]9,16,57,,9,16,57,,9,16,57,,64,,79
504 [131]15,16,9,25,15,16,9,25,15,16,9,25,64,,79
506 [131]10,16,39,73,10,16,39,73,10,16,39,73,64,,79
508 [131],32,7,25,3,64,9,25,,16,9,121,64,,79
510 [131]8,64,9,6,8,64,9,6,8,64,9,6,64,,79
512 [143]"str$aten fuer (NULL)onartverhaeltnisse------------------------------------------
514 data 255,,10,8,5,3
516 rem"[196]aten fuer [205]enues
518 [131],11,13,17,24,32,39,42,511,5,2,5,,5,1
520 [131]"load************ (NULL)aestro 64 *************","valnde","peekeispiel","(NULL)pielen
522 data"[197]ditor","[211]pezielle [198]unktionen","[200]armonie","[204]iedvariationen
524 [131]"(NULL)peichern","(NULL)aden","cmdcmdcmd ","loadleft$armonieparameter
526 data"[200]armonische [198]arbe","[214]orrang der [211]eptakkorde","[203]eine","[193]bsolut
528 [131]"peekeschraenkt","(NULL)onart","(NULL)nbekannt","str$ur","str$orisch","(NULL)hrygisch
530 data"[205]yxolydisch","[193]eolisch ([205]oll)
532 [131]"load(NULL)ariationsformen","asciguration, streng","asciguration, frei","(NULL)riolen
534 data"[212]enorvariation","6/8-[212]akt","[194]assfiguration","[198]uge
536 [131]"load(NULL)pezielle ascunktionen","(NULL)urueck zum left$auptenue
538 data"[206]oten [193] bis [194] um [195] [200]albtonschritte transponieren
540 [131]"(NULL)oten atn bis peek entfernen
542 data"[206]ach [206]ote [193] [194] [206]oten einfuegen","[206]oten [193] bis [194] nach [195] kopieren
544 [131]"(NULL)oten atn bis peek nach len verschieben
546 data"[147][194]eispiel","[218]urueck zum [200]auptmenue","[194]eispielmelodie
548 [131]"(NULL)elodie zu lang","(NULL)eine (NULL)elodie im (NULL)peicher
900 rem --- diskette ---
901 open167,8,15:print:print">";
902 get#167,a$:printa$;:ifa$<>chr$(13)then902
903 close167: return